﻿using System;
using System.Collections.Generic;
using Sustainalytics.Entities;

namespace Sustainalytics.DataLayer
{
    public interface IFiltersRepository
    {
        List<Filter> GetFiltersByOwner(List<Guid> userIds, Guid? accountId, TargetType? targetType);
        int GetFiltersCount(List<Guid> userIds, Guid? accountId, string filterName, TargetType? targetType, FilterType? filterType, int skip, int take);
        List<Filter> GetAccountFilters(Guid accountId);
        List<Filter> GetFiltersByAccountId(Guid userId, Guid accountId, TargetType? targetType, FilterType? filterType);
        List<Filter> GetStandardFilters(TargetType targetType);
        Filter GetFilterById(Guid filterId);
        Filter GetFilterByNameAndAccountId(string filterName, Guid filterId, Guid filterAccountId, TargetType filterTargetType);

        Filter GetFilterByNameAndUserId(string filterName, Guid filterId, Guid filterOwnerUserId, TargetType filterTargetType);
        
        bool SaveFilter(Filter filter);
        bool DeleteFilter(Guid filterId);
    }
}
